package bdsimple.impl.mysql;

import bdsimple.abstractfactory.AbstractFactoryDAO;
import bdsimple.dao.base.CiudadDAO;
import bdsimple.dao.base.CiudadRecursoDAO;
import bdsimple.dao.base.RecursoDAO;
import bdsimple.dto.base.CiudadDTO;
import bdsimple.dto.base.CiudadRecursoDTO;
import bdsimple.dto.base.RecursoDTO;
import dao.base.impl.BaseDTO;
import dao.base.impl.Reference;

public class CiudadRecursoDTOImpl extends BaseDTO implements CiudadRecursoDTO {

	public CiudadRecursoDTOImpl() {
		super(CiudadRecursoDAO.class);
	}

	// ---------------------------------------------------------------------------
	
	private Reference<CiudadDTO> ciudadDTORef = new Reference<CiudadDTO>();

	private Reference<RecursoDTO> recursoDTORef = new Reference<RecursoDTO>();

	// ---------------------------------------------------------------------------

	public Reference<CiudadDTO> getCiudadDTORef() {
		return ciudadDTORef;
	}
	
	public CiudadDTO getCiudadDTO() {
		if (ciudadDTORef.getRefValue() == null) {
			if (ciudadDTORef.getRefIdent() != 0) {
				try {
					
					CiudadDAO ciudadDAO = (CiudadDAO) AbstractFactoryDAO.getFactoryDAO(). //
						getDAO(CiudadDAO.class, connectionBean);

					ciudadDTORef.setRefValue( //
							(CiudadDTO) ciudadDAO.loadById(ciudadDTORef.getRefIdent()));

				} catch (Exception e) {
					e.printStackTrace();
					throw new RuntimeException(e);
				}
			}
		}

		return ciudadDTORef.getRefValue();
	}

	public void setCiudadDTORef(CiudadDTO ciudadDTO) {
		this.ciudadDTORef.setRefValue(ciudadDTO);
	}
	
	// ---------------------------------------------------------------------------

	public Reference<RecursoDTO> getRecursoDTORef() {
		return recursoDTORef;
	}
	
	public RecursoDTO getRecursoDTO() {
		if (recursoDTORef.getRefValue() == null) {
			if (recursoDTORef.getRefIdent() != 0) {
				try {
					
					RecursoDAO recursoDAO = (RecursoDAO) AbstractFactoryDAO.getFactoryDAO(). //
						getDAO(RecursoDAO.class, connectionBean);

					recursoDTORef.setRefValue( //
							(RecursoDTO) recursoDAO.loadById(recursoDTORef.getRefIdent()));

				} catch (Exception e) {
					e.printStackTrace();
					throw new RuntimeException(e);
				}
			}
		}

		return recursoDTORef.getRefValue();
	}

	public void setRecursoDTORef(RecursoDTO recursoDTO) {
		this.recursoDTORef.setRefValue(recursoDTO);
	}
	
	// ---------------------------------------------------------------------------

}
